package model;
import java.util.Date;
import java.util.Set;

import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Column;
import javax.persistence.JoinColumn;

@Entity
@Table(name="Almacen")
public class Almacen{
	private int id_almacen;
	private int capacidad;
	private String nombre;
	private Date fechaCreacion;
	private Date fechaBaja;
	private Parametro estadoAlmacen;
	private double area;
	private Institucion institucionAlmacen;
	private Set<Producto> almacenProducto;
	
	public Almacen(){
		
	}
	
	@Id
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	@Column(name="id_almacen")
	public int getId_almacen() {
		return id_almacen;
	}

	public void setId_almacen(int id_almacen) {
		this.id_almacen = id_almacen;
	}

	@Column(name="capacidad")
	public int getCapacidad() {
		return capacidad;
	}
	
	public void setCapacidad(int capacidad) {
		this.capacidad = capacidad;
	}
	
	@Column(name = "nombre", length = 50)
	public String getNombre() {
		return nombre;
	}
	
	public void setNombre(String nombre) {
		this.nombre = nombre;
	}
	
	@Column(name = "fechaCreacion")
	public Date getFechaCreacion() {
		return fechaCreacion;
	}
	
	public void setFechaCreacion(Date fechaCreacion) {
		this.fechaCreacion = fechaCreacion;
	}
	
	@Column(name = "fechaBaja")
	public Date getFechaBaja() {
		return fechaBaja;
	}
	
	public void setFechaBaja(Date fechaBaja) {
		this.fechaBaja = fechaBaja;
	}
	
	@ManyToOne(fetch = FetchType.EAGER)
	@JoinColumn(name = "estadoAlmacen", nullable = false)
	public Parametro getEstadoAlmacen() {
		return estadoAlmacen;
	}
	
	public void setEstadoAlmacen(Parametro estadoAlmacen) {
		this.estadoAlmacen = estadoAlmacen;
	}
	
	@Column(name = "area")
	public double getArea() {
		return area;
	}
	
	public void setArea(double area) {
		this.area = area;
	}

	@ManyToOne(fetch = FetchType.EAGER)
	@JoinColumn(name = "institucionAlmacen", nullable = false)
	public Institucion getInstitucionAlmacen() {
		return institucionAlmacen;
	}

	public void setInstitucionAlmacen(Institucion institucionAlmacen) {
		this.institucionAlmacen = institucionAlmacen;
	}

	@OneToMany(fetch = FetchType.EAGER, mappedBy = "almacenProducto")
	public Set<Producto> getAlmacenProducto() {
		return almacenProducto;
	}

	public void setAlmacenProducto(Set<Producto> almacenProducto) {
		this.almacenProducto = almacenProducto;
	}
}
